home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / Physics_Pa1816171182004.psc / Physics Demo / Array.frm next >
Text File  |  2004-11-09  |  10KB  |  355 lines

  1. VERSION 5.00
  2. Begin VB.Form Form1 
  3.    AutoRedraw      =   -1  'True
  4.    BackColor       =   &H00000000&
  5.    BorderStyle     =   4  'Fixed ToolWindow
  6.    Caption         =   "Advanced Physics Array"
  7.    ClientHeight    =   10080
  8.    ClientLeft      =   1980
  9.    ClientTop       =   450
  10.    ClientWidth     =   9015
  11.    Icon            =   "Array.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    MaxButton       =   0   'False
  14.    MinButton       =   0   'False
  15.    MousePointer    =   2  'Cross
  16.    ScaleHeight     =   10080
  17.    ScaleWidth      =   9015
  18.    ShowInTaskbar   =   0   'False
  19.    StartUpPosition =   2  'CenterScreen
  20.    Begin VB.HScrollBar BallsBar 
  21.       Height          =   255
  22.       LargeChange     =   200
  23.       Left            =   7080
  24.       Max             =   1000
  25.       Min             =   1
  26.       TabIndex        =   4
  27.       Top             =   5640
  28.       Value           =   20
  29.       Width           =   1935
  30.    End
  31.    Begin VB.HScrollBar WideBar 
  32.       Height          =   255
  33.       LargeChange     =   5
  34.       Left            =   7080
  35.       Max             =   20
  36.       Min             =   1
  37.       TabIndex        =   0
  38.       Top             =   5400
  39.       Value           =   1
  40.       Width           =   1935
  41.    End
  42.    Begin VB.CommandButton HitBox 
  43.       Caption         =   "MoveBox"
  44.       Height          =   255
  45.       Left            =   7080
  46.       TabIndex        =   1
  47.       Top             =   5160
  48.       Width           =   1935
  49.    End
  50.    Begin VB.CommandButton Command1 
  51.       Caption         =   "Reset"
  52.       Height          =   255
  53.       Left            =   7080
  54.       TabIndex        =   2
  55.       Top             =   4920
  56.       Width           =   1935
  57.    End
  58.    Begin VB.CommandButton RedrawBut 
  59.       Caption         =   "Redraw On/Off"
  60.       Height          =   255
  61.       Left            =   7080
  62.       TabIndex        =   3
  63.       Top             =   4680
  64.       Width           =   1935
  65.    End
  66.    Begin VB.Timer Timer1 
  67.       Interval        =   1
  68.       Left            =   8400
  69.       Top             =   3720
  70.    End
  71.    Begin VB.Shape Shape1 
  72.       BackColor       =   &H00000000&
  73.       BackStyle       =   1  'Opaque
  74.       BorderColor     =   &H0000FF00&
  75.       FillColor       =   &H0000FF00&
  76.       FillStyle       =   6  'Cross
  77.       Height          =   255
  78.       Index           =   2
  79.       Left            =   7080
  80.       Top             =   2640
  81.       Width           =   1935
  82.    End
  83.    Begin VB.Shape Shape2 
  84.       BackColor       =   &H00000000&
  85.       BackStyle       =   1  'Opaque
  86.       BorderColor     =   &H000080FF&
  87.       FillColor       =   &H000080FF&
  88.       FillStyle       =   6  'Cross
  89.       Height          =   255
  90.       Index           =   0
  91.       Left            =   0
  92.       Top             =   9720
  93.       Width           =   2055
  94.    End
  95.    Begin VB.Shape Shape1 
  96.       BackColor       =   &H00000000&
  97.       BackStyle       =   1  'Opaque
  98.       BorderColor     =   &H0000FF00&
  99.       FillColor       =   &H0000FF00&
  100.       FillStyle       =   6  'Cross
  101.       Height          =   255
  102.       Index           =   4
  103.       Left            =   5280
  104.       Top             =   1440
  105.       Width           =   2295
  106.    End
  107.    Begin VB.Shape Shape1 
  108.       BackColor       =   &H00000000&
  109.       BackStyle       =   1  'Opaque
  110.       BorderColor     =   &H0000FF00&
  111.       FillColor       =   &H0000FF00&
  112.       FillStyle       =   6  'Cross
  113.       Height          =   255
  114.       Index           =   3
  115.       Left            =   5040
  116.       Top             =   4200
  117.       Width           =   3975
  118.    End
  119.    Begin VB.Shape Shape1 
  120.       BackColor       =   &H00000000&
  121.       BackStyle       =   1  'Opaque
  122.       BorderColor     =   &H0000FF00&
  123.       FillColor       =   &H0000FF00&
  124.       FillStyle       =   6  'Cross
  125.       Height          =   255
  126.       Index           =   1
  127.       Left            =   0
  128.       Top             =   2640
  129.       Width           =   5415
  130.    End
  131.    Begin VB.Shape Shape1 
  132.       BackColor       =   &H00000000&
  133.       BackStyle       =   1  'Opaque
  134.       BorderColor     =   &H0000FF00&
  135.       FillColor       =   &H0000FF00&
  136.       FillStyle       =   6  'Cross
  137.       Height          =   255
  138.       Index           =   0
  139.       Left            =   0
  140.       Top             =   5040
  141.       Width           =   1695
  142.    End
  143. End
  144. Attribute VB_Name = "Form1"
  145. Attribute VB_GlobalNameSpace = False
  146. Attribute VB_Creatable = False
  147. Attribute VB_PredeclaredId = True
  148. Attribute VB_Exposed = False
  149. 'Jared's Collision Detection Engine
  150.  
  151. Dim Gravity(1000) As Double
  152. Dim ForceL(1000) As Double
  153. Dim ForceR(1000) As Double
  154. Dim XArray(1000) As Integer
  155. Dim YArray(1000) As Integer
  156. Dim Bounce(1000) As Integer
  157. Dim LR(1000) As Boolean
  158. Dim BoxMass(1000) As Single
  159. Dim Floor As Integer
  160. Dim ArraySizer As Integer
  161. ' Define Main physics Variables
  162.  
  163. Dim MouseX As Integer
  164. Dim MouseY As Integer
  165. Dim LineWidth As Byte
  166. Dim Movebox As Boolean
  167. Dim Redraw As Boolean
  168. Dim C As Single
  169. ' Define other Variables
  170.  
  171. Private Sub BallsBar_Change()
  172. ArraySizer = BallsBar.Value
  173. End Sub
  174.  
  175. Private Sub BallsBar_Scroll()
  176. ArraySizer = BallsBar.Value
  177. End Sub
  178.  
  179. Private Sub Command1_Click()
  180. Reset
  181. End Sub
  182.  
  183. Private Sub Form_Activate()
  184. Reset
  185. ArraySizer = 20
  186. Redraw = True
  187. FrameCount = 0
  188. BoxCount = 0
  189. LineWidth = 3
  190. Form1.BackColor = vbBlack
  191. Form1.ForeColor = vbGreen
  192. Movebox = False
  193. End Sub
  194.  
  195. Private Sub Form_Click()
  196. ShapeTop = Shape1(r).Top
  197. ShapeBot = Shape1(r).Top + Shape1(r).Height
  198. ShapeLeft = Shape1(r).Left
  199. ShapeRight = Shape1(r).Left + Shape1(r).Width
  200. Shape2(r).Top = MouseY - (Shape2(r).Height / 2)
  201. Shape2(r).Left = MouseX - (Shape2(r).Width / 2)
  202. 'Reset
  203. End Sub
  204.  
  205. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  206. MouseX = X
  207. MouseY = Y
  208. If Movebox = True Then
  209. Shape2(r).Top = MouseY - (Shape2(r).Height / 2)
  210. Shape2(r).Left = MouseX - (Shape2(r).Width / 2)
  211. End If
  212. End Sub
  213. Public Sub CalcHit()
  214. Dim i As Integer ' Loop and Color Variables
  215. Dim r As Integer
  216. Dim B As Integer
  217.  
  218. If Redraw = True Then Form1.Cls
  219. Form1.DrawWidth = LineWidth
  220.  
  221. C = 255 / ArraySizer ' Used For Coloring The Dots
  222.  
  223. For i = LBound(XArray) To ArraySizer 'Main Drawing Loop
  224.  
  225. B = i * C ' Used For Coloring The Dots
  226. Form1.ForeColor = RGB(255 - B, 0, 255)
  227.  
  228. For r = 0 To 4 ' Shape 1 physics loop
  229.     ShapeTop = Shape1(r).Top
  230.     ShapeBot = Shape1(r).Top + Shape1(r).Height
  231.     ShapeLeft = Shape1(r).Left
  232.     ShapeRight = Shape1(r).Left + Shape1(r).Width
  233. 'Easier for working out the Platform top, width and bottom etc in If statement
  234.  
  235.         If XArray(i) >= ShapeLeft And XArray(i) <= ShapeRight And YArray(i) >= ShapeTop And YArray(i) <= ShapeBot Then
  236.             Floor = ShapeTop ' - 3000
  237.             ForceR(i) = 40 + (50 * Rnd)
  238.             ForceL(i) = 40 + (50 * Rnd)
  239.             'Bounce(i) = False
  240.             Gravity(i) = 10 + (20 * Rnd)
  241.         End If
  242. 'Shape 1 collision Detection
  243. Next r
  244.  
  245. For r = 0 To 0 ' Shape 1 physics loop
  246.     ShapeTop = Shape2(r).Top
  247.     ShapeBot = Shape2(r).Top + Shape2(r).Height
  248.     ShapeLeft = Shape2(r).Left
  249.     ShapeRight = Shape2(r).Left + Shape2(r).Width
  250.  
  251.         If XArray(i) >= ShapeLeft And XArray(i) <= ShapeRight And YArray(i) >= ShapeTop And YArray(i) <= ShapeBot Then
  252.         Floor = ShapeTop ' - 3000
  253.         ForceR(i) = 40 + (50 * Rnd)
  254.         LR(i) = True
  255.         'Bounce(i) = False
  256.         Gravity(i) = 100 + (20 * Rnd)
  257.         End If
  258. 'Shape 1 collision Detection
  259. Next r
  260.     
  261.     If YArray(i) < 0 + 5 Then Bounce(i) = False
  262.     If YArray(i) > Floor - 1000 Then Bounce(i) = True
  263.     If YArray(i) > Form1.Height Then YArray(i) = 0
  264.     If Bounce(i) = True Then YArray(i) = YArray(i) - Gravity(i)
  265.     If Bounce(i) = False Then YArray(i) = YArray(i) + Gravity(i)
  266.     If Bounce(i) = False Then Gravity(i) = Gravity(i) + BoxMass(i)
  267.     If Bounce(i) = True Then Gravity(i) = Gravity(i) - (BoxMass(i) * (1 + Rnd * 1))
  268.     'If Gravity(i) < 0 Then Bounce(i) = 0
  269.     'Up/Down Collision detection and Gravity For each dot
  270.     
  271. If LR(i) = True And ForceR(i) > 1 Then
  272.     ForceR(i) = ForceR(i) - (ForceR(i) / 100)
  273.     XArray(i) = XArray(i) + ForceR(i)
  274.     End If
  275. If LR(i) = False And ForceL(i) > 1 Then
  276.     ForceL(i) = ForceL(i) - (ForceL(i) / 100)
  277.     XArray(i) = XArray(i) - ForceL(i)
  278. End If
  279.  
  280. If XArray(i) < 0 Then
  281.     LR(i) = True
  282.     ForceR(i) = ForceL(i)
  283. ElseIf XArray(i) + XArray(i) > 18000 Then
  284.     LR(i) = False
  285.     ForceL(i) = ForceR(i)
  286. End If
  287.     'Left/Right Collision detection and Gravity For each dot
  288.     
  289. Form1.PSet (XArray(i), YArray(i))
  290. 'Simple draw dot at its calculated Position
  291. Next i
  292. End Sub
  293. Private Sub Form_Unload(Cancel As Integer)
  294. End
  295. End Sub
  296.  
  297. Private Sub HitBox_Click()
  298. Movebox = Not Movebox ' Enables the Box to be moved
  299. If Movebox = True Then
  300. HitBox.Caption = "Movebox Enabled"
  301. Else
  302. HitBox.Caption = "Movebox Not Enabled"
  303. End If
  304. End Sub
  305.  
  306. Private Sub RedrawBut_Click()
  307. Form1.Cls
  308. Reset
  309. Redraw = Not Redraw
  310. End Sub
  311.  
  312. Private Sub Timer1_Timer()
  313. CalcHit ' call main draw function
  314. End Sub
  315.  
  316. Sub Reset()
  317. Dim i As Integer
  318. Dim tempnum As Integer
  319. Randomize
  320. 'Reset Arrays
  321. For i = LBound(XArray) To UBound(YArray)
  322.     XArray(i) = 500 + (Rnd * 750) 'form1.Width * Rnd
  323.     YArray(i) = 0
  324. Next i
  325. For i = LBound(BoxMass) To UBound(BoxMass)
  326. BoxMass(i) = 1 ' + (10 * Rnd)
  327. Next i
  328. For i = LBound(Bounce) To UBound(Bounce)
  329. Bounce(i) = False
  330. Next i
  331. For i = LBound(Gravity) To UBound(Gravity)
  332. Gravity(i) = 1 * Rnd
  333. Next i
  334. For i = LBound(LR) To UBound(LR)
  335. tempnum = 1 * Rnd
  336. LR(i) = tempnum
  337. Next i
  338. For i = LBound(ForceR) To UBound(ForceR)
  339. 'ForceR(i) = 500 * Rnd
  340. 'ForceL(i) = 500 * Rnd
  341. ForceR(i) = 1.1
  342. ForceL(i) = 1.1
  343. Next i
  344.  
  345. End Sub
  346.  
  347. Private Sub WideBar_Change()
  348. LineWidth = WideBar.Value
  349. End Sub
  350.  
  351. Private Sub WideBar_Scroll()
  352. LineWidth = WideBar.Value
  353. End Sub
  354.  
  355.